/**
 * 测试类，包含一个用于复制文件夹及其所有内容到另一个位置的静态方法。
 */
package mytest;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test01 {

    /**
     * 主方法，作为程序的入口
     */
    public static void main(String[] args) throws IOException {
        // 测试代码
        File src = new File("D:\\aaa\\src");
        File dest = new File("D:\\aaa\\dest");

        // 调用复制文件夹方法
        copydir(src, dest);
    }

    /**
     * 递归复制文件夹及其所有内容到指定目标文件夹。
     *
     * @param src  源文件夹
     * @param dest 目标文件夹
     * @throws IOException 如果在复制过程中发生IO异常
     */
    private static void copydir(File src, File dest) throws IOException {
        // 确保目标文件夹存在
        dest.mkdirs();
        // 获取源文件夹中所有文件和文件夹
        File[] files = src.listFiles();
        // 遍历所有文件和文件夹
        for (File file : files) {
            // 如果是文件，则复制
            if (file.isFile()) {
                FileInputStream fis = new FileInputStream(file);
                FileOutputStream fos = new FileOutputStream(new File(dest, file.getName()));
                byte[] bytes = new byte[1024];
                int len = 0;
                // 读取文件内容并写入到目标文件夹中
                while (((len = fis.read(bytes)) != -1)) {
                    fos.write(bytes, 0, len);
                }
                // 关闭文件流
                fos.close();
                fis.close();

            } else {
                // 如果是文件夹，则递归复制
                copydir(file, new File(dest, file.getName()));
            }
        }
    }

}






